// 地上有一个m行n列的方格，从坐标 [0,0] 到坐标 [m-1,n-1] 。
// 一个机器人从坐标 [0, 0] 的格子开始移动，它每次可以向左、右、上、下移动一格（不能移动到方格外），也不能进入行坐标和列坐标的数位之和大于k的格子。
// 例如，当k为18时，机器人能够进入方格 [35, 37] ，因为3+5+3+7=18。但它不能进入方格 [35, 38]，因为3+5+3+8=19。请问该机器人能够到达多少个格子？

// 输入：m = 2, n = 3, k = 1
// 输出：3
[
  [
    [0, 0],
    [0, 1],
    [0, 2],
  ],
  [
    [1, 0],
    [1, 1],
    [1, 2],
  ],
  [
    [2, 0],
    [2, 1],
    [2, 2],
  ],
];

var sum = (num) => {
  return String(num)
    .split("")
    .reduce((pre, cur) => {
      return pre + Number(cur);
    }, 0);
};

// 广度优先算法
/**
 * @param {number} m
 * @param {number} n
 * @param {number} k
 * @return {number}
 */
var movingCount = function (m, n, k) {
  let row = new Array(m).fill(false),
    arr = new Array(n).fill(row);
  let count = 0;
  for (let i in arr) {
    for (let j in arr[i]) {
      if (sum(i) + sum(j) <= k) {
        count++;
      }
    }
  }
  return count;
};

console.log(movingCount(3, 1, 0));
